PUG : A Symbolic Verifier of GPU Programs

نویسندگان

  • Guodong Li
  • Ganesh Gopalakrishnan
  • Robert M. Kirby
  • Dan Quinlan
چکیده

There is increasing interest in utilizing Graphical Processing Units for general-purpose computations. While substantial effort has been made on improving the programmability and performance of General Purpose GPU systems, little attention has been paid to verifying the correctness of the programs running on these systems. We present a preliminary automated symbolic verifier based on mechanical decision procedures which is able to prove functional correctness of CUDA programs and detect bugs such as race conditions. The concurrent behavior of CUDA kernels is modeled by a constraint formula containing symbolic variables, whose satisfiability indicates whether the correctness is ensured or a bug is found. This modeling enables the formal study of memory consistency models and relevant compilation / optimization issues in CUDA. To mitigate the interleaving explosion problem we employ a symbolic partial order reduction (POR) technique. We also investigate other static techniques such as loop abstraction to improve the analysis performance. As one of the applications, our tool can be used to check equivalence of CUDA programs.

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Formal Verification of Programs and Their Transformations

Formal verification is an act of using formal methods to check the correctness of intended programs. The verification is done by providing a formal proof on an abstract mathematical model of the program, with respect to a certain formal specification or property. We present three case studies on using formal methods to verify programs and their transformations: (1) we use term rewriting and the...

متن کامل

Protocol-based verification of MPI programs

We present a methodology for the verification of Message Passing Interface (MPI) programs written in C. The aim is to statically verify programs against protocol specifications, enforcing properties such as fidelity and absence of deadlocks. We make use of a protocol language based on a dependent type system for message-passing parallel programs. For the verification of a program against a give...

متن کامل

Symbolic Differentiation in GPU Shaders

Derivatives arise frequently in graphics and GPGPU applications. 1 To meet this need we have added symbolic differentiation as a built 2 in language feature in the HLSL shading language. The symbolic 3 derivative is computed at compile time so it is available in all types 4 of shaders (geometry, pixel, vertex, etc.). The algorithm for com5 puting the symbolic derivative is simple and has reason...

متن کامل

VeriFast: A Powerful, Sound, Predictable, Fast Verifier for C and Java

VeriFast is a prototype verification tool for single-threaded and multithreaded C and Java programs. In this paper, we first describe the basic symbolic execution approach in some formal detail. Then we zoom in on two technical aspects: the approach to permission accounting, including fractional permissions, precise predicates, and counting permissions; and the approach to lemma function termin...

متن کامل

Action Language Verifier

Action Language is a specification language for reactive software systems. In this paper we present the Action Language Verifier which consists of 1) a compiler that converts Action Language specifications to composite symbolic representations, and 2) an infinite-state symbolic model checker which verifies (or falsifies) CTL properties of Action Language specifications. Our symbolic manipulator...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2009